selenium 框架切换iframe报错NoSuchFrameException的解决方法 您所在的位置:网站首页 selenium 切换iframe selenium 框架切换iframe报错NoSuchFrameException的解决方法

selenium 框架切换iframe报错NoSuchFrameException的解决方法

2023-03-24 01:48| 来源: 网络整理| 查看: 265

最近在使用selenium框架做网页机器人,记录一些挺重要但是网上没有说的很清晰的细节。

使用find_element_by_xpath()的时候遇到报错,有比较大概率是因为页面有iframe 导致找不到这个节点,因此就需要用 _switch_to.frame()方法来切换到具体的iframe中,再寻找目标节点。

比如豆瓣的登陆验证,就有3个iframe在中间,如图这是第一个iframe

与find_element_by_xpath() 方法不同,_switch_to.frame() 的参数并不支持xpath,

如果使用

driver._switch_to.frame('//*[@id="anony-reg-new"]/div/div[1]/iframe') 是会报错NoSuchFrameException的

_switch_to.frame()  要输入一个对象。

因此,我们切换到第二个iframe,可以采用

iframe = driver.find_element_by_xpath('//*[@id="anony-reg-new"]/div/div[1]/iframe')

driver._switch_to.frame(iframe)

也可以采用 driver._switch_to.frame(1) 的方式。

但是显然,driver._switch_to.frame(iframe) 的方式更加的准确,也容易在网页的xpath 变化后(豆瓣等验证码经常会周期性修改一些参数),更好的修改锁定对象,可阅读性也更强。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有